## Parameters

Long:     'L'
Integer:  'I'
Pointer:  'P'
Void:     'V'
String:   'S'
Callback: 'K' # win32-api only


## Windows Data Types

BOOL        => 'I' (or 'B', win32-api only)
DWORD       => 'L'
HANDLE      => 'L'
LPDWORD     => 'P' (or 'L')
LPTSTR      => 'P'
LPCTSTR     => 'S'
UINT        => 'L'
VOID        => 'V'
WORD        => 'I'
LPVOID      => 'L' (or 'P')
CALLBACK    => 'K'


## C Data Types

void        => 'V'
void*       => 'P'
char*       => 'P'
const char* => 'L'
int         => 'I'
long        => 'L'
struct      => 'P'
struct*     => 'P'


## Notes

In practice most LPVOID types should be designated as 'L' because this
usually means the function is looking for an address. Check the documentation
for details.

If using the windows-api library, you can use 'B' instead of 'I' for the return
type for functions that return a BOOL.
